package com.ssyu.examination.conmmon.util;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

/**
 * <pre>
 * 邮件发送工具实现类
 * 
 * 需要注意的地方：
 * 1、认证密码不是登录密码，而是授权密码
 * 2、如果使用QQ服务器发送邮件，会遇到此问题：https://www.oschina.net/question/2282830_247657?fromerr=yWlMbzzV
 * </pre>
 * 
 * @author Hsu。
 * @since Oct 13, 2016
 */
public class MailUtil {

	private static final String CHARSET = "UTF-8";
	private static final int SMTP_PORT = 465;
	private static final boolean SSL_ON_CONNECT = true;
	private static final String HOST_NAME = Util.rb.getString("email.hostname");
	private static final String USERNAME = Util.rb.getString("email.username");
	private static final String AUTHENTICATION_PASSWORD = Util.rb
			.getString("email.authentication.password");

	public static boolean send(String destEmail, String subject, String msg) {
		// 发送email
		HtmlEmail email = new HtmlEmail();
		try {
			// 设置邮件服务器，不同邮件服务器不一样，比如qq邮箱是smtp.qq.com,163邮箱是smtp.163.com
			email.setHostName(HOST_NAME);
			// 设置邮件发送端口
			email.setSmtpPort(SMTP_PORT);
			// 设置使用SSL加密连接
			email.setSSLOnConnect(SSL_ON_CONNECT);
			// 字符编码集的设置
			email.setCharset(CHARSET);
			// 收件人的邮箱
			email.addTo(destEmail);
			// 发送人的邮箱
			email.setFrom(USERNAME, USERNAME);
			// email.setFrom("xxlllq201314@163.com", "xxlllq201314@163.com");
			// 如果需要认证信息的话，设置认证：用户名-授权密码。
			email.setAuthentication(USERNAME, AUTHENTICATION_PASSWORD);
			// email.setAuthentication("xxlllq201314@163.com",
			// "xxlllq1101464221");
			// 要发送的邮件主题
			email.setSubject(subject);
			// 要发送的信息，由于使用了HtmlEmail，可以在邮件内容中使用HTML标签
			email.setMsg(msg);
			// 发送
			email.send();
			return true;
		} catch (EmailException e) {
			e.printStackTrace();
			System.out.println(USERNAME + "发送给" + destEmail + "邮件失败!");
			return false;
		}
	}
}
